package com.wangbo.regexp;

import org.junit.jupiter.api.Test;

import java.util.StringJoiner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 快速入门
 * 正则表达式是处理文本的利器
 */
public class Introduction {
    /**
     * 提取文章中的指定内容：
     *   1.英文单词
     *   2.数字
     *   3.英文单词和数字
     *   4.百度热搜标题
     */
    @Test
    public void test01() {
        String content = "java是1款非常nice的编程语言";
        StringJoiner result = new StringJoiner(",","找到：","。");  // 存放匹配结果

        // 1. 正则表达式
//        String regexp = "[a-zA-Z]+";  // 英文单词
        String regexp = "([a-zA-Z]+)|([0-9]+)";  // 英文单词或数字
//        String regexp = "[0-9]+";  // 数字
//        String regexp = "\\d{4}";  // 4位数字
//        String regexp = "<a target=\"_blank\" title=\"(\\S*)\"";  // 百度热搜标题。正则表达式中，()为一个分组，对应一个group。group(0) 对应整体，group(n) 对应整体中的第n个分组。

        // 2. 构建 pattern matcher 对象。pattern：模式。matcher：匹配器。
        Pattern pattern = Pattern.compile(regexp);
        Matcher matcher = pattern.matcher(content);

        // 3. 循环匹配
        while (matcher.find()) {  // 当匹配成功
            result.add(matcher.group(0));  // 保存每次的匹配结果
//            result.add(matcher.group(1));
        }

        // 4. 打印结果
        System.out.println(result);  // 找到：java,1,nice。
    }
}
